if (tree == NULL)
return;
- node = tree->root;
- g_assert (node);
- while (node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
do
{
if (tree == NULL)
return;
- node = tree->root;
- g_assert (node);
- while (node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
do
{
if (tree == NULL)
return;
- node = tree->root;
- g_assert (node);
-
- while (node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
do
{
g_array_sort(array, gtk_rbtree_reorder_sort_func);
/* rewind node*/
- node = tree->root;
- while (node && node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
for (i = 0; i < length; i++)
{
g_array_sort (array, gtk_rbtree_reorder_invert_func);
/* rewind node*/
- node = tree->root;
- while (node && node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
/* Go through the tree and change the values to the new ones. */
for (i = 0; i < length; i++)
#endif /* G_ENABLE_DEBUG */
}
+GtkRBNode *
+_gtk_rbtree_first (GtkRBTree *tree)
+{
+ GtkRBNode *node;
+
+ node = tree->root;
+
+ if (node == tree->nil)
+ return NULL;
+
+ while (node->left != tree->nil)
+ node = node->left;
+
+ return node;
+}
+
GtkRBNode *
_gtk_rbtree_next (GtkRBTree *tree,
GtkRBNode *node)
return NULL;
}
- node = tree->root;
-
- while (node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
path = gtk_tree_path_new_first ();
do
if (node->children)
{
tree = node->children;
- node = tree->root;
-
- while (node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
gtk_tree_path_append_index (path, 0);
}
return;
}
- node = tree->root;
-
- while (node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
g_object_ref (model);
if (node->children)
{
tree = node->children;
- node = tree->root;
-
- while (node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
gtk_tree_path_append_index (path, 0);
}
if (start_node->children)
{
start_tree = start_node->children;
- start_node = start_tree->root;
- while (start_node->left != start_tree->nil)
- start_node = start_node->left;
+ start_node = _gtk_rbtree_first (start_tree);
}
else
{
if (start_node->children)
{
start_tree = start_node->children;
- start_node = start_tree->root;
- while (start_node->left != start_tree->nil)
- start_node = start_node->left;
+ start_node = _gtk_rbtree_first (start_tree);
}
else
{
gboolean has_child;
tree = node->children;
- node = tree->root;
+ node = _gtk_rbtree_first (tree);
- g_assert (node != tree->nil);
-
- while (node->left != tree->nil)
- node = node->left;
has_child = gtk_tree_model_iter_children (tree_view->priv->model,
&iter,
&parent);
gboolean has_child;
tree = node->children;
- node = tree->root;
-
- g_assert (node != tree->nil);
+ node = _gtk_rbtree_first (tree);
- while (node->left != tree->nil)
- node = node->left;
has_child = gtk_tree_model_iter_children (tree_view->priv->model,
&iter,
&parent);
GtkRBNode *new_node;
new_tree = node->children;
- new_node = new_tree->root;
-
- while (new_node && new_node->left != new_tree->nil)
- new_node = new_node->left;
+ new_node = _gtk_rbtree_first (new_tree);
if (!gtk_tree_model_iter_children (model, &child, iter))
return FALSE;
if (!tree)
return FALSE;
- node = tree->root;
- while (node && node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
g_return_val_if_fail (node != NULL, FALSE);
path = _gtk_tree_view_find_path (tree_view, tree, node);
gtk_tree_view_get_cursor (tree_view, &old_path, NULL);
cursor_tree = tree_view->priv->tree;
- cursor_node = cursor_tree->root;
if (count == -1)
{
- while (cursor_node && cursor_node->left != cursor_tree->nil)
- cursor_node = cursor_node->left;
+ cursor_node = _gtk_rbtree_first (cursor_tree);
/* Now go forward to find the first focusable row. */
path = _gtk_tree_view_find_path (tree_view, cursor_tree, cursor_node);
}
else
{
+ cursor_node = cursor_tree->root;
+
do
{
while (cursor_node && cursor_node->right != cursor_tree->nil)
indices = gtk_tree_path_get_indices (path);
tree = tree_view->priv->tree;
- node = tree->root;
- while (node && node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
while (node)
{
gtk_tree_path_append_index (tmp_path, 0);
tree = node->children;
- node = tree->root;
- while (node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
/* try to expand the children */
do
{
if (tree == NULL || tree->root == NULL)
return;
- node = tree->root;
-
- while (node && node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
while (node)
{
GtkTreeIter tmp;
tree = node->children;
- node = tree->root;
-
- while (node->left != tree->nil)
- node = node->left;
+ node = _gtk_rbtree_first (tree);
tmp = *iter;
has_child = gtk_tree_model_iter_children (model, iter, &tmp);